home *** CD-ROM | disk | FTP | other *** search
- [ from http://www.rootshell.com/ ]
-
- From mnemonix@globalnet.co.uk Sun Jul 12 17:42:29 1998
- Date: Mon, 13 Jul 1998 01:31:11 +0100
- From: Mnemonix <mnemonix@globalnet.co.uk>
- To: info@rootshell.com
- Subject: New Perl.exe, IIS exploit
-
- Russ Cooper of ntbugtraq seems unwilling to publish this information -
- perhaps it shows how to exploit this too much:
-
- ****************************************************************************
-
- All versions of Internet Information Server seem to have a feature that can
- cause security problems when it has been configured to run Perl scripts to
- produce dynamic web pages, although really it is a combination of IIS and
- the Perl command interpreter (Perl.exe) acting together that can cause this
- hole. Basically the security implications of this problem is that data can
- be read from execute only virtual directories sometimes leading to the
- discovery of UserIDs and passwords.
-
- Script extentions (in this case .cgi or .pl) are mapped against the
- interpreter in the registry under the following key:
-
- HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap
-
- When the web service receives a request from a browser it checks the
- extention of the file requested and deals with it accordingly. In this case
- if a .pl or .cgi file is requested IIS checks the registry to see what
- interpreter should deal with that kind of file and then passes the requested
- information to the interpreter, perl.exe. This is the "fault" of IIS : that
- it does not check to see whether the file actually exists or not; it just
- blindly passes the information to the interpreter. IIS leaves this
- responsibilty to the interpreter.
-
- The second part of this problem is caused by the interpreter : perl.exe.
- Perl.exe will open and try to execute any file that actually exists as long
- as it has the extention .pl (if that is the registered extention.)
- Consequently if a space (%20) and .pl is appended to the end of a URL
- Internet Information Server will pass the request to perl.exe which will
- then open the file and try to execute it:
-
- http://www.site.com/scripts/file.ext%20.pl
-
- To demonstrate how this could be a problem : Some CGI scripts often require
- a .txt file that contains a userID and password such as wwwboard.cgi.
- Create a text file with two lines. On the first line type "Webadmin" and on
- the secondline type "Password". Like so:
-
- Webadmin
- Password
-
- And name the file pass.txt the request the following URL:
-
- http://www.site.com/scripts/pass.txt%20.pl
-
- You should receive a response similar to :
-
- Can't call method "webadmin" in empty package "password" at
- C:\InetPub\scripts\pass.txt line 1
-
- You can also glean information from other "sensitive" files such as .asp or
- .idc
-
- http://www.site.com/scripts/default.asp%20.pl or
-
- http://www.site.com/scripts/database.idc
-
- You could even run old perl scripts that are still in the /scripts
- directory but have had their extention changed:
-
- http://www.site.com/scripts/script.pl.old%20.pl
-
-
- This problem is exacerbated by the fact that perl.exe will accept willcards
- such as * and ? so you don't even need to know that name of a file. You can
- request :
-
- http://www.site.com/scripts/*.txt%20.pl
-
- and perl.exe will open the first text file in the scripts directory that it
- comes across.
-
- This was tested with Perl version 5.001 build 110. It is not yet known if
- other versions are affected. Testing would be appreciated.
-
- Affected machines:
- NT Server 4.0 Service pack 1 IIS 2.0
- NT Server 4.0 Service pack 3 IIS 3.0
- NT Server 4.0 Service pack 3 IIS 4.0
- NT Wkst 4.0 Service pack 3 PWS 3.0
-
- It is not yet know if other Web servers such as Netscape are affected.
- Again testing will prove if this is so and would be appreciated.
-
- The solution to this problem is to use the ISAPI interpreter instead :
- PerlIS.dll. This leads to better performance anyway as the script is run in
- the same memory space as IIS and only one instance of it ever needs to be
- loaded into memory unlike perl.exe where for each script requested a new
- instance of perl.exe is loaded into its own memory space.
-
- Mnemonix
- http://www.users.globalnet.co.uk/~mnemonix
-
- ****************************************************************************
-
- Thought you might be interested. Cheers.
- Mnemonix
- http://www.users.globalnet.co.uk/~mnemonix
-
-